Inhalt

  1. Projekt-Infos
  2. Häufig gestellte Fragen (FAQ)
  3. Bekannte Fehler

 

I. Projekt-Infos

Projekt:   Jax Newsletter (Programm zur Verwaltung von Mailinglisten)
     
File:   jax_newsletter.php
     
Version:   1.02 (mit optionaler MySQL-Datenbankunterstützung)
     
Interpreter:      PHP 4.02+
     
Code:   Andreas John
     
Design:   Andreas John
     
Homepage:   www.jtr.de/scripting/php/newsletter
     
Lizenz:  

Copyright (C) 2001, Andreas John (Jack (tR))

Dieses Programm unterliegt der "General Public License" in der Version 2 oder neuer! Den genauen Wortlaut dieser Lizenz finden Sie in der beiliegenden Datei gpl.txt, bzw. auf der Website der Free Software Foundation unter http://www.fsf.org/copyleft/gpl.html

Credits:  

Mein persönliches Dankeschön vor allem an:

Martin Sondermann
http://www.kunstphotografie.de
für seine persönliche Unterstützung
   

Wojciech Dorosz
http://www.serwisy.net

für die polnischen Sprachvorlagen
   

Tamas Herczeg
http://www.soft-trans.hu

für die ungarischen Sprachvorlagen
   
   

 

II. Häufig gestellte Fragen (FAQ):

  1. Was ist Jax Newsletter ? Wozu brauche ich das Programm ?

  2. Wie installiere ich Jax Newsletter auf meiner Website (ohne MySQL) ?

  3. Wie kann ich Jax Newsletter mit MySQL benutzen?

  4. Wie viele Einträge kann Jax Newsletter verwalten?

  5. Kann Jax Newsletter mehrere Mailinglisten gleichzeitig verwalten?

 

1. Was ist Jax Newsletter ? Wozu brauche ich das Programm ?

Jax Newsletter ist ein Skript, mit dem Sie direkt auf Ihrer Website Mailinglisten erstellen, verwalten und e-mails an diese Listen versenden können.

Darüber hinaus bietet Ihnen Jax Newsletter zur Zeit folgende Leistungsmerkmale:

 

Die Mailingliste funktioniert (standardmäßig) folgendermaßen:

1.

Das Startskript heißt jax_newsletter.php und kann vom Webmaster mit folgenden Parametern aufgerufen werden.

 

Beispiel:

http://..../jax_newsletter.php?ml_id=1&language=English

ml_id gibt die zu verwendende Mailingliste an.
Wenn Sie keinen Parameter angeben, wird ml_id=0 voreingestellt.
Wenn Sie einen Parameter angeben, müssen Sie globals.inc.php entsprechend anpassen (siehe --> Kann Jax Newsletter mehrere Mailinglisten verwalten? )

language gibt die zu verwendende Sprachvorlage an.
Wenn Sie einen Parameter angeben, stellen Sie sicher, dass eine entsprechende Vorlagendatei im Verzeichnis language existiert

jax_newsletter.php stellt dem Besucher Links zu zwei Webseiten bereit, auf denen sich der Besucher per Formular in die Mailingliste ein- (sign_in.php) oder austragen (sign_out.php) kann.

 

2.

Trägt sich ein Besucher in die Mailingliste ein oder aus, so werden die eingegebenen Daten in einer Protokolldatei (standardmäßig records) gespeichert. Ausserdem wird ein "pseudo-zufällig" generierter Schlüssel zusammen mit der e-mail-Adresse in der Datei subscriberlist gespeichert.

Um sicherzustellen, dass niemand unerwünscht die e-mail-Adresse eines anderen in die Liste einträgt, bzw. aus der Liste austrägt, bekommt der "Eigentümer" der e-mail-Adresse durch das Skript (sign.php) eine e-mail geschickt. Diese e-mail enthält einen Hyperlink auf das Skript verify.php, den der Empfänger anklicken muß, um sich entgültig in die Mailingliste ein- oder auszutragen:

 

Beispiel:

http://.../newsletter/verify.php?language=German&ml_id=0&do=sign&uid=3406044545....

do gibt an, ob sich der Benutzer ein oder austrägt.

uid enthält den von sign.php erzeugten Schlüssel, den verify.php jetzt mit dem Schlüssel in der Datei subscriberlist vergleicht. Ist der Vergleich erfolgreich, wird der entsprechende Eintrag in der Datei subscriberlist.csv gelöscht und die e-mail-Adresse in die Mailingliste (mailinglist) übernommen, bzw. gelöscht...

 

3.

Möchten Sie Benutzer von Hand aus der Mailingliste löschen, steht Ihnen dazu das Script list.admin.php im Verzeichnis admin zur Verfügung. Um es zu benutzen rufen Sie am besten das Skript index.php im Verzeichnis admin auf!

Beispiel:

http://..../admin/index.php?language=German


4.

Um eine Nachricht an die Mailingliste zu schicken, rufen Sie das Skript posting.php (am besten auch über index.php) auf. Geben Sie die Nachricht ein und drücken Sie auf Senden.

Wichtig:

Damit das Skript alle Nachrichten verschicken kann, muß die Browserverbindung "offen" gehalten werden. Sie dürfen also das Browserfenster erst schließen, wenn Sie eine Bestätigungsemail erhalten, dass alle e-mails erfolgreich verschickt wurden!

 

 

2. Wie installiere ich Jax Newsletter auf meiner Website? (ohne MySQL)

Jax Newsletter wurde in der Skriptsprache PHP 4 geschrieben und setzt PHP - eine serverseitige Programmiersprache, mit der man dynamisch erzeugte Webseiten erstellen kann - voraus!

(Fragen Sie ggfs. Ihren Web-Provider nach PHP-Unterstützung!)

Jax Newsletter läuft auch ohne MySQL-Unterstützung!

Verfügen Sie bereits über PHP-Unterstützung, dann tun Sie einfach folgendes:

  1. Besorgen Sie sich die aktuellste Version von Jax Newsletter unter http:/www.jtr.de/scripting/php/newsletter/ !

  2. Entpacken Sie das Archiv!

  3. Öffnen Sie mit einem Texteditor die Datei globals.inc.php (im Verzeichnis newsletter) und passen Sie die Einträge Ihren Bedürfnissen an!

  4. Laden Sie das Newsletter-Skript auf Ihre Website!

    Nachdem Sie das Skript auf Ihren Webspace hochgeladen haben, stellen Sie die Zugriffsrechte für die CSV-Dateien (standardmäßig "mailinglist" (die Mailingliste), "records" (die protokollierten Anmeldedaten), "subscriberlist" (Datei mit den Newcomern) so ein, dass die Skripte darauf vollen Zugriff haben!

    (Am besten Sie ändern später die Dateinamen und die dazugehörigen Einstellungen in globals.inc.php)

  5. Vergessen Sie nicht, das Skript auf Ihrer Website zu verlinken! ;-)
    Viel Spaß!

  6. Wichtiger Hinweis:
    Stellen Sie über die Konfigurationsmöglichkeiten Ihres Webservers sicher, dass niemand ausser Ihnen Zugriff auf die Administrationsskripte im Verzeichnis ../admin/index.php hat. (Beim Apache Webserver können Sie z.B. einzelne Verzeichnisse durch die Datei .htaccess gegen unerlaubte Zugriffe schützen)

 

3. Wie kann ich Jax Newsletter mit MySQL benutzen?

Jax Newsletter wurde so entworfen, dass es sowohl einfache Textdateien, als auch MySQL-Datenbanktabellen zur Speicherung der Einträge verwenden kann. Die Verwendung der MySQL-Datenbank ist bei großen Mailinglisten mit vielen Einträgen in der Regel schneller als die CSV-Variante...

Verfügen Sie über MySQL-Unterstützung dann tun Sie folgendes:

  1. Installieren Sie Jax Newsletter (siehe "Wie installiere ich Jax Newsletter auf meiner Website?")...

  2. Ändern Sie die folgende Einträge in der Datei globals.inc.php !

    $newsletters[0]->db_server = "http://...";
    $newsletters[0]->db_login = "...";
    $newsletters[0]->db_database = "...";
    $newsletters[0]->db_password = "...";

  3. Setzen $newsletter[0]->data_source = "mysql" !

  4. Starten Sie phpMyAdmin (oder das entsprechende Monitorprogramm für Ihren MySQL-Server) und legen Sie die folgende Tabellenstruktur in der unter db_database angegebenen Datenbank an. MySQL-Schema:

    CREATE TABLE mailinglist (
      id int(16) NOT NULL auto_increment,
      username varchar(64) NOT NULL default '',
      domain varchar(64) NOT NULL default '',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM;
    
    
    CREATE TABLE records (
      id int(16) NOT NULL auto_increment,
      action char(1) NOT NULL default '',
      time datetime NOT NULL default '0000-00-00 00:00:00',
      ip varchar(11) NOT NULL default '',
      email varchar(128) NOT NULL default '',
      profession varchar(128) NOT NULL default '',
      age year(4) NOT NULL default '0000',
      nationality varchar(64) NOT NULL default '',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM;
    
    
    CREATE TABLE subscriberlist (
      id int(16) NOT NULL auto_increment,
      date date NOT NULL default '0000-00-00',
      hash varchar(32) NOT NULL default '',
      email varchar(128) NOT NULL default '',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM;
    
    
  5. Wichtiger Hinweis:
    Stellen Sie über die Konfigurationsmöglichkeiten Ihres Webservers sicher, dass niemand ausser Ihnen Zugriff auf das Administrationsskript (admin/list.admin.php) hat.

    Beim Apache Webserver können Sie z.B. einzelne Verzeichnisse durch die Datei .htaccess gegen unerlaubte Zugriffe schützen.

 

4. Wie viele Einträge kann Jax Newsletter speichern?

Getestet habe ich das Skript nur mit einer kleinen, realistischen Menge von Einträgen (ca.1500 Einträge im CSV-Format). Theoretisch müsste das Skript (je nach verfügbarer Rechenzeit/-leistung und Datenquelle) problemlos mehrere 1000 Einträge verwalten können. Für größere Mailinglisten bietet sich die Verwendung von MySQL als Datenquelle an.

 

5. Kann Jax Newsletter mehrere Mailinglisten gleichzeitig verwalten?

Kein Problem! :-)
Möchten Sie mehr als einen Newsletter über das Skript "versorgen", gibt es zwei Möglichkeiten:

Entweder:

Sie legen für jeden Newsletter ein separates Verzeichnis mit einem separaten Skript an. Diese Möglichkeit kann bei mehreren Newslettern schnell unübersichtlich werden.

Oder:

Sie rufen das Newsletterskript mit dem Parameter ml_id auf. z.B:

http://../jax_newsletter.php?ml_id=1

Aus Sicherheitsgründen kann der Dateiname der Mailinglist nicht direkt mit der URL weitergegeben werden.
Die Zuordnung zwischen Mailinglist-ID und Mailinglist müssen Sie (zur Zeit) per Hand in der Datei globals.inc.php vornehmen:

...

// Titel des Newsletters
$newsletters[0]->title = "Jax Newsletter (English)";
$newsletters[0]->data_source = "csvfile";

// CSS template for the Guestbook
$newsletters[0]->css = "styles/default.css";
$newsletters[0]->do_log = true;
$newsletters[0]->logfile = "records";
$newsletters[0]->subscriberlist = "subscriberlist";
$newsletters[0]->mailinglist = "mailinglist";
$newsletters[0]->db_server = "";
$newsletters[0]->db_login = "";
$newsletters[0]->db_database = "";
$newsletters[0]->db_password = "";

$newsletters[1]->title = "Jax Newsletter (German)";
$newsletters[1]->data_source = "mysql";
$newsletters[1]->css = "styles/default.css";
$newsletters[1]->do_log = true;
$newsletters[1]->logfile = "records";
$newsletters[1]->subscriberlist = "subscriberlist";
$newsletters[1]->mailinglist = "mailinglist";
$newsletters[1]->db_server = "mysql4.webpack.hosteurope.de";
$newsletters[1]->db_login = "ftp19999";
$newsletters[1]->db_database = "mailinglist";
$newsletters[1]->db_password = "banane";

...

Im Beispiel wird eine weitere Mailingliste mit dem selben Skript benutzt::

Die zweite Mailingliste wird auf einem mysql-Datenbankserver abgelegt. Sie ist damit über die URL http://../jax_newsletter.php?ml_id=1 erreichbar

Äquivalent würde mit der URL http://../jax_newsletter?ml_id=2 eine dritte Mailinglistendatei zur Speicherung verwendet usw...

Sie können für jede Mailingliste die Datenquelle (mysql/csvfile) frei wählen!

 

 

III. Bekannte Fehler

- Wenn der Datenstrom zum Browser während des Sendens unterbrochen wird (z.B. wegen eines Proxy-Timeouts), kann es vorkommen , dass nicht alle Empfänger die Nachricht erhalten. Ausserdem kann es bei größeren Mailinglisten zu starker Zeitverzögerung kommen.

An Alternativen wird gearbeitet! :-)

 

Sollten Sie einen Fehler finden, oder haben Sie Fragen oder Verbesserungsvorschläge, zögern Sie bitte nicht, und wenden Sie sich einfach direkt an mich!

mailto: jack@jtr.de

 

Berlin, 30.12.2001 Jack (tR)